﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

using LeMigue.Scrum.Iterface.Enum;

namespace LeMigue.Scrum.Iterface.Model
{
    /// <summary>
    /// Representação de um grupo de usuário
    /// </summary>
    public class Group : IMember
    {
        /// <summary>
        /// Nome do grupo
        /// </summary>
        public string Name { get; private set; }

        /// <summary>
        /// Armazena os membros pertencetes ao grupo
        /// </summary>
        IDictionary<string, IMember> _membros = new Dictionary<string, IMember>();

        /// <summary>
        /// Contrutor de um grupo já existente
        /// </summary>
        /// <param name="name">Nome do grupo</param>
        public Group(string name)
        {
            Name = name;
        }

        /// <summary>
        /// Tipo de membro
        /// </summary>
        public MemberType Tipo
        {
            get { return MemberType.Group; }
        }



        public int Count
        {
            get { return _membros.Count; }
        }

        public IList<IMember> Membros
        {
            get { return new ReadOnlyCollection<IMember>(_membros.Values.ToList()); }
        }

        public void Add(string key, IMember membro)
        {
            if(!_membros.ContainsKey(key))
                _membros.Add(key, membro);
        }
    }
}
